﻿<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="cmd.css" rel="stylesheet" type="text/css">
<title>GRUB4DOS 简介</title>
</style>
</head>

<body>

<h1><span class="firstHeading">GRUB4DOS 简介</span></h1>
<p>摘自 <a href="http://grub4dos.sourceforge.net/wiki/index.php" target="_blank">
grub4dos_wiki</a> 仅稍作修改。</p>
<p>&nbsp;</p>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相信许多linuxer初次听到“GRUB FOR 
DOS”这个名字，第一感觉就是：这个对我没用，因为我不用DOS，即使用也不会去通过它启动GRUB。先别急，再问一句：您是否用过grldr呢？是否用过MaxDos、一键ghost、矮人DOS工具盘？如果答案是肯定的，那您已经在用GRUB 
FOR DOS了。 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先搞清楚与 GNU GRUB 的关系。 GNU GRUB 分为 GNU GRUB Legacy l和 GNU 
GRUB2 两代 。GNU GRUB Legacy 其实就是原来的 GNU GRUB 0.xx ，最新版是2005 年发布的 GNU GRUB 0.97 
。目前已停止开发，并改名为 GNU GRUB Lagecy 。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU GRUB2 是第二代 GRUB，它将取代原来的 GNU GRUB （例如0.9x版）。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而 GRUB4DOS 则是对 GNU GRUB Lagecy 的二次开发。该项目最早由 不点 
在2003年发起。目前主要由chenall、不点、bean 和另外几位中国人维护，很多人贡献了代码，再加上广大网友热心帮助，使得 GRUB4DOS 不断完善。</p>
<h2><b>GRUB4DOS 对 GNU GRUB 0.97 的改进</b></h2>
<h3>&nbsp;&nbsp;&nbsp;&nbsp;1、A20代码 和 bug修正</h3>
<p class="style1">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对A20的处理历来就是一个棘手问题。当初IBM引入这一设计，本意是为了让以往那些BUGGY软件能够运行，结果造成后世无穷无尽的隐患。当然不能全怪IBM，真正应当责怪的是那些不遵守IBM标准的硬件厂商，它们生产的系统无法用常规的几种方法来控制A20，使得软件开发者可能在很多意想不到的地方碰上A20这个妖魔，除了造成死机之外，还导致执行效率的极度降低。在微软的XMS规范中就明确写着，A20的控制在有些机器上是非常耗时的一个操作。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU GRUB 0.97中的A20代码很明确是有问题的，这在GNU 
GRUB邮件列表档案中就有提到。很多用户报告在使用gnu grub 
0.97时键盘失去响应。grub开发组在grub2中对A20代码打了补丁，以解决这些问题，但是这个补丁并没有打到我们目前广泛使用的0.97版上。为此GRUB4DOS用取自Linux内核的A20代码替换了原代码，并参考其他一些开源代码做了很多改进，基本上解决了这一问题。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A20只是改造的一个方面，在GRUB4DOS的开发过程中修复的GNU GRUB 
0.97的bug还有很多，有些在Changelog中并没有提到，其中大量的主要是为了应对 BIOS 的 bug 而作出的补救措施。到目前为止，已经把那些严重的BUG排解殆尽了，应该可以比较平滑地使用GRUB4DOS了。 </p>
<h3>&nbsp;&nbsp;&nbsp;&nbsp;2、磁盘仿真（虚拟磁盘）</h3>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是GRUB4DOS的一大特色功能，开发者下了不少功夫。这一功能是将 软盘镜像 或 光盘镜像 或硬盘镜像 
甚至某个硬盘分区 虚拟成 软驱 或 光驱 或 硬盘，进而运行其中的操作系统。 用SYSLINUX中的memdisk也可实现虚拟磁盘。比较而言，GRUB4DOS功能更强，限制更少，用法更灵活，同时对bios的要求也要高那么一点点，在一些BIOS有缺陷的机子上可能会出问题（不过不用太担心，实践表明这种情况极其罕见）。 
</p>
<h3>&nbsp;&nbsp;&nbsp;&nbsp;3、多种方式进入grub环境</h3>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（1）通过dos </h4>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在dos下运行grub.exe即可进入纯粹的grub环境，并部分地支持退回到DOS。</p>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也可把grub.exe作为 CONFIG.SYS 里的设备驱动程序而运行。 </p>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（2）通过Windows启动菜单</h4>
<p class="style1">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是被广泛使用的一种用法。MaxDos、一键ghost硬盘版、矮人DOS工具盘之类的软件就是以这种方式启动grldr，再通过磁盘仿真虚拟出一个软驱，进而启动DOS的。 
</p>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（3）将GRUB4DOS引导代码写入硬盘MBR，开机直接进入grub环境</h4>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
乍一看这不算什么改进——GNU GRUB本来就可以这样引导，但实际上在这里 GRUB4DOS 有相当大的革新。GNU GRUB lagecy的传统安装方法是：</p>
<pre>         root (xxx，x)
        setup (xxx)</pre>
<p class="style1">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一句是指定一个分区，该分区须存放有/boot/stage1和/boot/stage2文件，第二句是将引导代码写入 
硬盘MBR。这样安装的GRUB，其MBR引导代码被设置为从固定的分区加载stage2。假如我们某一天因为 
某些原因，需要删除或格式化该分区，或者做一些会引起该分区序号变化的操作（比如用 pqmagic 在该 
分区前添加或删除分区），就需要预先重装一次grub，重新指定存放stage2文件的分区，否则将无法引导。 这一点上 GNU GRUB 显得不够灵活。 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而 GRUB4DOS 
采取了新的策略：其MBR引导代码并非固定地指向某个分区，而是搜索所有分区，查找并加载 grldr，只要某分区上存有一份grldr，就能启动。而且安装时可以将原微软的MBR备份，启动时如果找不到grldr，便自动加载备份的MBR。显然这种方式更加灵活、稳健，所以GRUB4DOS 
虽然保留了 GNU GRUB 的全部命令和功能（包括 setup 命令，注：0.4.5版grub4dos已取消 setup 命令），但不推荐使用传统的安装方式。<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当然 GRUB4DOS 
  方式也不是十全十美，因为其引导代码还不能识别所有的文件系统，目前支持仅 NTFS/FAT12/FAT16/FAT32/EXT2/EXT3（也不少了 
，以后将支持更多的格式），所以可能需要专门设一个分区来存放 grldr 。不过在我看来这是值得的，一点小麻烦换来了更多的方便和稳定。 </p>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（4）图片背景支持</h4>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可用 640x480@14位色 
的图片做背景，0.4.5版增加800×600分辨率图片支持，但要注意的是800×600模式对一些机子支持不是很好,有可能会死机。</p>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（5）中文支持</h4>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GRUB4DOS 
发布有中文版，大大方便了中文用户。 可选三种方式加载中文支持：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A，使用中文版grldr配合内置命令 
fontfile 加载中文字库来显示中文菜单（菜单文件需使用 ANSI 文本编码模式，否则中文会显示为乱码）；<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B，使用英文版grldr配合外置命令 
unifont 加载中文字库来显示中文菜单（菜单文件需使用 UTF-8 文本编码模式，否则中文会显示为乱码）；<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C，使用内置命令 gfxmenu 加载 
message 文件来显示中文菜单（菜单文件需使用 UTF-8 文本编码模式，否则中文会显示为乱码）；<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（正常情况下方式C显示效果最好，但如果出错的话可能会很糟）。</p>
<h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（6）光驱支持</h4>
<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
该功能使得用户可以在GRUB环境下访问光驱，并可由光驱启动，很实用。 建议使用 IDE 接口光驱，对 SATA 接口光驱兼容性偏差。</p>
<p>&nbsp;</p>

</body>

</html>
